#include "hx711.h"
#include "Delay.h"

void HX711_Init()
{
	RCC_APB2PeriphClockCmd(HX711_GPIO_CLK,ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Pin=HX711_SCK_GPIO_PIN;
	
	GPIO_Init(HX711_SCK_GPIO_PORT,&GPIO_InitStructure);
	
	GPIO_InitStructure.GPIO_Pin=HX711_DT_GPIO_PIN;
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
	
	GPIO_Init(HX711_DT_GPIO_PORT,&GPIO_InitStructure);
}


uint32_t HX711_Get_Data(void)
{
	uint32_t Data;
	HX711_SCK_L;
	Delay_us(1);
	Data=0;
	while(HX711_DT);
	for(int i=0;i<24;i++)
	{
		HX711_SCK_H;
		Delay_us(1);
		Data=Data<<1;
		HX711_SCK_L;
		Delay_us(1);
		if(HX711_DT)
		{
			Data++;
		}
	}
	HX711_SCK_H;
	Delay_us(1);
	Data=Data^0x800000;
	HX711_SCK_L;
	Delay_us(1);
	
	return Data;
}
